#include<stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
  int cnt=5;
  pid_t id=fork();
  if(id<0)
  {
     perror("fork");
     exit(1);

  }
  else if(id==0)
  {
    while(cnt--)
    {
      printf("I am child process,pid:%d,ppid:%d\n",getpid(),getppid());
     sleep(1);
    }
    //int *p=NULL;
   // *p=100;//野指针
    exit(20);
  }
  else{
//    sleep(10);
    printf("I am father\n");
   // pid_t ret=wait(NULL);
    int status=0;
    pid_t ret=waitpid(id,&status,0);//父进程的id就是子进程的pid
    if(ret>0)
    {
        printf("等待子进程成功 ，子进程pid:%d,子进程收到的信号编号:%d,子进程退出码：%d\n",ret,status&0x7F,(status>>8)&0xFF);
       sleep(3); 
    }
    else{
      printf("等待子进程失败\n");
    }
  }
}
